<?php
/**
 * @APP@
 *
 * @package Page
 */
require_once 'App.php';

/**
 * ユーザー情報表示
 *
 * <pre>
 * ID指定されたユーザー情報を表示します。
 * </pre>
 *
 * @package Page
 * @author  $Author:$
 * @version SVN: Release: $Id:$
 */
class Page_User_Index extends App_Page
{
    /**
     * 画像ライブラリ設定
     *
     * @var array
     */
    private $_img = array('adaptor'=>BEAR_Img::ADAPTOR_GD);

    /**
     * インジェクト
     *
     * @return void
     */
    public function onInject()
    {
        // ユーザーIDを$_GETからインジェクト
        $this->injectGet('id');
        $this->_user_id = $_GET['id'];
        parent::onInject();
    }

    /**
     * 初期化
     *
     * <pre>
     * $args['id'] ユーザーID
     * </pre>
     *
     * @param array $args
     * @return void
     *
     * @required id
     */
    public function onInit(array $args)
    {	// ページのユーザーリソース
        $values = array('id' => $args['id']);
        $params = array('uri' => 'User', 'values' => $values);
        $user = $this->_resource->read($params)->link(array('profile', 'follower_to', 'follower_from'))->getBody(true);
        $this->set('user', $user);
        $isFollowing = false;
        foreach ($user['follower_from'] as $follow) {
            if ($follow['user_id'] === $args['auth']['id']) {
                $isFollowing = true;
            }
        }
        $this->set('is_following', $isFollowing);
        $this->set('follow_to', count($user['follower_to']));
        $this->set('follow_from', count($user['follower_from']));
    }

    /**
     * 出力
     *
     * @return void
     */
    public function onOutput()
    {
        $this->display();
    }

    /**
     * 例外
     *
     * ユーザーIDの指定がないクエリーは400 Bad Requestを出力
     */
    public function onException(Exception $e)
    {
        try {
            throw $e;
        } catch (BEAR_Annotation_Exception $e) {
            $msg = 'ユーザーidが必要です';
            throw new Panda_Exception($msg, 400, array('info'=>$e->getInfo()));
        }
        throw $e;
    }
}

App_Main::run('Page_User_Index');